<?php
/**
 * 数据库备份工具
 * 
 * @author  Lee <a605333742@gmail.com>
 * @time    2016-06-07
 */
namespace Component;

class SystemDBAction extends CommonAction {	
    /*
     * 备份数据库
     */
    public function backupDB() {
        $host = C ( 'DB_HOST' ) . (C ( 'DB_PORT' ) ? ":" . C ( 'DB_PORT' ) : '');
        $user = C ( 'DB_USER' );
        $password = C ( 'DB_PWD' );
        $dbname = C ( 'DB_NAME' );

        //连接mysql数据库
        if (! mysql_connect ( $host, $user, $password )) {
                $this->error ( '数据库连接失败' );
        }
        //是否存在该数据库
        if (! mysql_select_db ( $dbname )) {
                $this->error ( '不存在数据库:' . $dbname );
        }
        mysql_query ( "set names 'utf8'" );
        $mysql = "set charset utf8;\r\n";
        $q1 = mysql_query ( "show tables" );
        while ( $t = mysql_fetch_array ( $q1 ) ) {
            $table = $t [0];
            $q2 = mysql_query ( "show create table `$table`" );
            $sql = mysql_fetch_array ( $q2 );
            $mysql .= $sql ['Create Table'] . ";\r\n";
            $q3 = mysql_query ( "select * from `$table`" );
            while ( $data = mysql_fetch_assoc ( $q3 ) ) {
                $keys = array_keys ( $data );
                $keys = array_map ( 'addslashes', $keys );
                $keys = join ( '`,`', $keys );
                $keys = "`" . $keys . "`";
                $vals = array_values ( $data );
                $vals = array_map ( 'addslashes', $vals );
                $vals = join ( "','", $vals );
                $vals = "'" . $vals . "'";
                $mysql .= "insert into `$table`($keys) values($vals);\r\n";
            }
        }

        $dir = "../Public/mysql_bak";
        $filename =  $dbname . date ( 'Ymd' ) . ".sql";
        $path = $dir."/".$filename;

//      if (!is_dir($dir)) {
//          if(!mkdir($dir)){// 尝试创建目录
//              $this->error ( '无法目录'.$dir);
//          }
//      }
        $fp = fopen ( $path, 'w' );
        fputs ( $fp, $mysql );
        fclose ( $fp );

        $this->success ( '数据备份成功<br><span style="color:red">'.$filename.'</span>' );
    }
}
?>